/*
 * @Author: your name
 * @Date: 2021-08-30 15:56:48
 * @LastEditTime: 2021-08-31 15:18:14
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \briup\Web课后练习成果\ES5\求最大差值.js
 */

//怎么用函数实现输出数组最大差值？
//例如：找出下列正数组的最大差值 [10,5,11,7,8,9]  输出6
//定义并初始化数组
var arr1 = new Array(10, 5, 11, 7, 8, 9);
//自定义排序方法
function compare(v1, v2) {
    var result = v1 - v2;
    return result;
}
arr1.sort(compare);
console.log(arr1);
//升序排序之后，让末位于首位相减
var num = arr1[arr1.length - 1] - arr1[0];
// 得出最大插值
console.log(num);


//让数组两两相减，求所有差值
//定义新数组
var arr2 = new Array(10, 5, 11, 7, 8, 9);
//定义差值数组
var sum = new Array();
// 差值数组的下标
var a = 0;
//双重for循环让他们进行相减
for (var i = 0; i < arr2.length; i++) {
    for (var j = i + 1; j < arr2.length; j++) {
        //求差值，注意求了绝对值
        var value = Math.abs(arr2[i] - arr2[j]);
        //给差值数组进行赋值
        sum[a++] = value;
    }
}
//输出差值数组
console.log(sum);
//对差值进行比较，输出最大差值
function compare(v1, v2) {
    var result = v1 - v2;
    return result;
}
//对差值进行排序
sum.sort(compare);
console.log(sum[sum.length - 1]);



//第三种方法求最大差值
var arr3 = new Array(10, 5, 11, 7, 8, 9);
Array.prototype.output = function output(array) {
    //使用apply进行传入数组类型的参数，因为Math.max是不能直接传输数组类型的参数
    //找出最大的值用item1承接，最小的值用item2承接
    var item1 = Math.max.apply(null, array);
    var item2 = Math.min.apply(null, array);
    //计算差值
    return item1 - item2;
}

var num = arr3.output(arr3); //调用output函数，arr3作为参数
console.log(num); //6